/**
 * author:vesper.z
 * date: 2024  13:46
 * class: Test02
 * description：基本数据类型
 **/
class Test02 {
    /**
     * 比较两个数字
     */
    fun compare(a: Int, b: Int): Boolean {
        if (a == b) {//值相等
            return true
        }
        if (a === b) {//值相等，对象地址相等
            return true
        }
        return false
    }

    /**
     * 类型转换
     */
    fun convert(): Unit? {
        val a: String? = "12"
        val b: Int? = a?.toInt()
        val c: Char? = b?.toChar()
        val d: Byte? = c?.toByte()
        println(a)
        println(b)
        println(c)
        println(d)
        return null
    }

    /**
     * 位操作符
     */
    fun bitwiseOperator(): Unit? {
        val a: Int? = 10
        val shrValue = a?.shr(2)//右移2位
        println(shrValue)
        val shlValue = a?.shl(2)//左移2位
        println(shlValue)
        val ushrValue = a?.ushr(2)//无符号右位移
        println(ushrValue)
        val andValue = a?.and(2)//与
        println(andValue)
        val orValue = a?.or(2)//或
        println(orValue)
        val xorValue = a?.xor(2)//异或
        println(xorValue)
        val invValue = a?.inv()//反向
        println(invValue)
        return null
    }

    /**
     *字符
     */
    fun charFun() {
        for (i in '1'..'9') {
            println(i)
        }
        for (i in 'a'..'z') {
            println(i)
        }
    }

    /**
     * 数组
     */
   fun  arr(){
        var arr1= arrayOf(1,2,3,4.5)
        val arr2 = Array(10, { i -> (i * 2) })
        println(arr1[0])
        println(arr2[1])
   }
    /**
     * 字符串
     */
    fun stringFun(){
        val  a:String = """
            123
            456
            789
        """.trimIndent()
        println(a)
        val  b:String = """
            |123
            |456
            |789
        """.trimMargin()
        println(b)
    }

}

/**
 * 测试方法
 */
fun main(args: Array<String>) {
    var test02 = Test02();
    test02.stringFun()
//    test02.arr()
//    test02.charFun()
//    test02.bitwiseOperator()
//    test02.convert()
//    println(test02.compare(12, 12))
}